'\" te
'\"! tbl|eqn | mmdoc
'\"macro stdmacro
.ds Vn Version 1.2
.ds Dt 24 September 1999
.ds Re Release 1.2.1
.ds Dp Jan 14 18:30
.ds Dm 01 texsubima
.ds Xs 43161 9 texsubimage3d.gl
.TH GLTEXSUBIMAGE3D 3G
.SH NAME
.B "glTexSubImage3D
\- specify a three-dimensional texture subimage

.SH C SPECIFICATION
void \f3glTexSubImage3D\fP(
GLenum \fItarget\fP,
.nf
.ta \w'\f3void \fPglTexSubImage3D( 'u
	GLint \fIlevel\fP,
	GLint \fIxoffset\fP,
	GLint \fIyoffset\fP,
	GLint \fIzoffset\fP,
	GLsizei \fIwidth\fP,
	GLsizei \fIheight\fP,
	GLsizei \fIdepth\fP,
	GLenum \fIformat\fP,
	GLenum \fItype\fP,
	const GLvoid \fI*pixels\fP )
.fi

.EQ
delim $$
.EN
.SH PARAMETERS
.TP \w'\fIxoffset\fP\ \ 'u 
\f2target\fP
Specifies the target texture.
Must be \%\f3GL_TEXTURE_3D\fP.
.TP
\f2level\fP
Specifies the level-of-detail number.
Level 0 is the base image level.
Level \f2n\fP is the \f2n\fPth mipmap reduction image.
.TP
\f2xoffset\fP
Specifies a texel offset in the x direction within the texture array.
.TP
\f2yoffset\fP
Specifies a texel offset in the y direction within the texture array.
.TP
\f2zoffset\fP
Specifies a texel offset in the z direction within the texture array.
.TP
\f2width\fP
Specifies the width of the texture subimage.
.TP
\f2height\fP
Specifies the height of the texture subimage.
.TP
\f2depth\fP
Specifies the depth of the texture subimage.
.TP
\f2format\fP
Specifies the  of the pixel data.
The following symbolic values are accepted:
\%\f3GL_COLOR_INDEX\fP,
\%\f3GL_RED\fP,
\%\f3GL_GREEN\fP,
\%\f3GL_BLUE\fP,
\%\f3GL_ALPHA\fP,
\%\f3GL_RGB\fP,
\%\f3GL_BGR\fP,
\%\f3GL_RGBA\fP,
\%\f3GL_BGRA\fP,
\%\f3GL_LUMINANCE\fP, and
\%\f3GL_LUMINANCE_ALPHA\fP.
.TP
\f2type\fP
Specifies the data type of the pixel data.
The following symbolic values are accepted:
\%\f3GL_UNSIGNED_BYTE\fP,
\%\f3GL_BYTE\fP,
\%\f3GL_BITMAP\fP,
\%\f3GL_UNSIGNED_SHORT\fP,
\%\f3GL_SHORT\fP,
\%\f3GL_UNSIGNED_INT\fP,
\%\f3GL_INT\fP, 
\%\f3GL_FLOAT\fP,
\%\f3GL_UNSIGNED_BYTE_3_3_2\fP,
\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP,
\%\f3GL_UNSIGNED_SHORT_5_6_5\fP,
\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP,
\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP,
\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP,
\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP,
\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP,
\%\f3GL_UNSIGNED_INT_8_8_8_8\fP,
\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP,
\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and
\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP.
.TP
\f2pixels\fP
Specifies a pointer to the image data in memory.
.SH DESCRIPTION
Texturing maps a portion of a specified texture image
onto each graphical primitive for which texturing is enabled.
To enable and disable three-dimensional texturing, call \%\f3glEnable\fP
and \%\f3glDisable\fP with argument \%\f3GL_TEXTURE_3D\fP.
.P
\%\f3glTexSubImage3D\fP redefines a contiguous subregion of an existing three-dimensional
texture image.
The texels referenced by \f2pixels\fP replace the portion of the
existing texture array with x indices \f2xoffset\fP and
$"xoffset" ~+~ "width" ~-~ 1$, inclusive,
y indices \f2yoffset\fP and $"yoffset" ~+~ "height" ~-~ 1$, inclusive,
and z indices \f2zoffset\fP and $"zoffset" ~+~ "depth" ~-~ 1$, inclusive. 
This region may not include any texels outside the range of the
texture array as it was originally specified.
It is not an error to specify a subtexture with zero width, height, or
depth but such a specification has no effect.
.SH NOTES
\%\f3glTexSubImage3D\fP is available only if the GL version is 1.2 or greater.
.P
Texturing has no effect in color index mode.
.P
\%\f3glPixelStore\fP and \%\f3glPixelTransfer\fP modes affect texture images
in exactly the way they affect \%\f3glDrawPixels\fP.
.P
Formats \%\f3GL_BGR\fP, and \%\f3GL_BGRA\fP and types
\%\f3GL_UNSIGNED_BYTE_3_3_2\fP,
\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP,
\%\f3GL_UNSIGNED_SHORT_5_6_5\fP,
\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP,
\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP,
\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP,
\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP,
\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP,
\%\f3GL_UNSIGNED_INT_8_8_8_8\fP,
\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP,
\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, and
\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP are available only if the GL version 
is 1.2 or greater.
.P
When the \%\f3GL_ARB_multitexture\fP extension is supported, \%\f3glTexSubImage3D\fP
specifies a three-dimensional sub texture for the current texture unit,
specified with \%\f3glActiveTextureARB\fP.
.P
When the \%\f3GL_ARB_imaging\fP extension is supported, the RGBA components
specified in \f2pixels\fP may be processed by the imaging pipeline.  See
\%\f3glTexImage3D\fP for specific details.
.SH ERRORS
\%\f3GL_INVALID_ENUM\fP is generated if \f2target\fP is not \%\f3GL_TEXTURE_3D\fP. 
.P
\%\f3GL_INVALID_OPERATION\fP is generated if the texture array has not
been defined by a previous \%\f3glTexImage3D\fP operation.
.P
\%\f3GL_INVALID_VALUE\fP is generated if \f2level\fP is less than 0.
.P 
\%\f3GL_INVALID_VALUE\fP may be generated if \f2level\fP is greater
than $log sub 2$\f2max\fP,
where \f2max\fP is the returned value of \%\f3GL_MAX_TEXTURE_SIZE\fP.
.P
\%\f3GL_INVALID_VALUE\fP is generated if $"xoffset" ~<~ ~-b$,
$("xoffset" ~+~ "width") ~>~ (w~-~b)$, 
$"yoffset" ~<~ ~-b$, or $("yoffset" ~+~ "height") ~>~ (h~-~b)$, 
or $"zoffset" ~<~ ~-b$, or $("zoffset" ~+~ "depth") ~>~ (d~-~b)$,
where $w$ is the \%\f3GL_TEXTURE_WIDTH\fP, 
$h$ is the \%\f3GL_TEXTURE_HEIGHT\fP, $d$ is the \%\f3GL_TEXTURE_DEPTH\fP 
and $b$ is the border width of the texture image being modified.
Note that $w$, $h$, and $d$ include twice the border width.
.P
\%\f3GL_INVALID_VALUE\fP is generated if \f2width\fP, \f2height\fP, or \f2depth\fP
is less than 0.
.P
\%\f3GL_INVALID_ENUM\fP is generated if \f2format\fP is not an accepted
 constant.
.P
\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is not a type constant.
.P
\%\f3GL_INVALID_ENUM\fP is generated if \f2type\fP is \%\f3GL_BITMAP\fP and
\f2format\fP is not \%\f3GL_COLOR_INDEX\fP.
.P
\%\f3GL_INVALID_OPERATION\fP is generated if \%\f3glTexSubImage3D\fP is executed
between the execution of \%\f3glBegin\fP and the corresponding
execution of \%\f3glEnd\fP.
.P
\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of
\%\f3GL_UNSIGNED_BYTE_3_3_2\fP,
\%\f3GL_UNSIGNED_BYTE_2_3_3_REV\fP,
\%\f3GL_UNSIGNED_SHORT_5_6_5\fP, or
\%\f3GL_UNSIGNED_SHORT_5_6_5_REV\fP
and \f2format\fP is not \%\f3GL_RGB\fP.
.P
\%\f3GL_INVALID_OPERATION\fP is generated if \f2type\fP is one of
\%\f3GL_UNSIGNED_SHORT_4_4_4_4\fP,
\%\f3GL_UNSIGNED_SHORT_4_4_4_4_REV\fP,
\%\f3GL_UNSIGNED_SHORT_5_5_5_1\fP,
\%\f3GL_UNSIGNED_SHORT_1_5_5_5_REV\fP,
\%\f3GL_UNSIGNED_INT_8_8_8_8\fP,
\%\f3GL_UNSIGNED_INT_8_8_8_8_REV\fP,
\%\f3GL_UNSIGNED_INT_10_10_10_2\fP, or
\%\f3GL_UNSIGNED_INT_2_10_10_10_REV\fP
and \f2format\fP is neither \%\f3GL_RGBA\fP nor \%\f3GL_BGRA\fP.
.SH ASSOCIATED GETS
\%\f3glGetTexImage\fP
.br
\%\f3glIsEnabled\fP with argument \%\f3GL_TEXTURE_3D\fP
.SH SEE ALSO
\%\f3glActiveTextureARB(3G)\fP,
\%\f3glCopyTexImage1D(3G)\fP,
\%\f3glCopyTexImage2D(3G)\fP,
\%\f3glCopyTexSubImage1D(3G)\fP,
\%\f3glCopyTexSubImage2D(3G)\fP,
\%\f3glCopyTexSubImage3D(3G)\fP,
\%\f3glDrawPixels(3G)\fP,
\%\f3glPixelStore(3G)\fP,
\%\f3glPixelTransfer(3G)\fP,
\%\f3glTexEnv(3G)\fP,
\%\f3glTexGen(3G)\fP,
\%\f3glTexImage1D(3G)\fP,
\%\f3glTexImage2D(3G)\fP,
\%\f3glTexImage3D(3G)\fP,
\%\f3glTexSubImage1D(3G)\fP,
\%\f3glTexSubImage2D(3G)\fP,
\%\f3glTexParameter(3G)\fP

